package com.ctshk.rpc.season.service;

import com.ctshk.rpc.season.dto.PackageProductCostDTO;
import com.ctshk.rpc.season.dto.SeasonFixedProductPackageBusDTO;
import com.ctshk.rpc.season.req.SeasonFixedProductPackageBusReq;
import com.ctshk.rpc.season.req.UpdatePackageProductReq;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * <p>
 * 套票-固定套票单项产品打包-巴士表 服务类
 * </p>
 *
 * @author 杨林
 * @since 2021-03-09
 */
public interface ISeasonFixedProductPackageBusService {
    /* @MethodName: 获取巴士票的价格
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/26 17:09
     **/
    PackageProductCostDTO getBusProductPrice(Long productId, LocalDate departureDate, Long userId, Integer channelType);

    /* @MethodName: 获取 固定套票默认巴士的价格
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/18 18:04
     **/
    BigDecimal getDefaultBusPrice(Long packageId, LocalDate departDate, LocalDate arrDate, Long userId, Integer channelType);

    List<SeasonFixedProductPackageBusDTO> getBusByPackageId(Long packageId, LocalDate departDate, LocalDate arrDate, Long userId, Integer channelType);

    /* @MethodName: 批量保存 巴士车票 信息
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/9 17:24
     **/
    void batchBusProduct(Long userId, Long packageId, List<SeasonFixedProductPackageBusReq> busReqList);

    /* @MethodName: 获取固定产品 巴士票产品 信息
     * @Description: TODO
     * @Param: fixedSeasonId 固定套票id   packageId 产品打包id
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/11 11:40
     **/
    List<SeasonFixedProductPackageBusDTO> getSeasonFixedProductBusDtoList(Long packageId);

    /* @MethodName: 删除原来的巴士产品
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/12 16:26
     **/
    void deletePreviousBus(Long userId, Long packageId);


    /* @MethodName: 获取 巴士差价信息
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/23 9:59
     **/
    List<SeasonFixedProductPackageBusDTO> getBusDifferencePrice(UpdatePackageProductReq req);
}
